package com.tedu.api.io;

import org.junit.Test;

import java.io.*;
import java.nio.charset.StandardCharsets;
import java.util.Scanner;

/**
 * 做一个记事本程序
 * 需求:程序开始之后,要求用户输入一个文件名
 * 用户可以直接在控制台输入文本内容
 * 输入"退出/exit",程序结束
 * a.txt直接出现  API项目下  保存对应内容
 */
public class Note {
    public static void main(String[] args) throws UnsupportedEncodingException, FileNotFoundException {
        FileOutputStream fos = null;
        OutputStreamWriter osw = null;
        BufferedWriter bw = null;
        PrintWriter pw = null;
        //1.从控制台输入：  a.txt  文本
        try {
            Scanner input = new Scanner(System.in);
            System.out.println("请输入文件名：");
            String text = input.nextLine();  //获取一行文本
            //   System.out.println(text);  打桩
            //2.流---写
            fos = new FileOutputStream(text);
            osw = new OutputStreamWriter(fos, "UTF8");//转换流
            bw = new BufferedWriter(osw); //缓冲输出流--加速字符串传输
            pw = new PrintWriter(bw);
            //3.往假设 a.txt 写入文件--一直写入，直到写出文件“退出/exit”
            //3.1 定义字符串变量--赋值为null，接收用户每次输入“文本内容”
            String line = null;
            //3.2 【补充：考虑用户体验】提示内容
            System.out.println("请开始输入内容【'退出'程序结束】:");
            //3.2 一直写入
            while (true) {
                line = input.nextLine();  //从控制台获取一行文本
                //3.3 判断条件---判断line是否等于 退出 或者 exit 程序结束
                if (line.equals("退出") || line.equals("exit")) {
                    break;// 跳出方法体
                }
                //3.4 PW字符输出流--写出
                pw.println(line);
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            //3.5【用户体验】拜拜~
            System.out.println("拜拜~~，请查看 API 文件夹生成文件！！");
            //3.6关闭高级流
            pw.close();
        }
    }
}